Web 网页劫持是如何做的
web网页劫持是如何做的?
按照劫持的方法不同,我将劫持分为下面两类:
- 跳转型劫持:用户输入地址A,但是跳转到地址B
- 注入型劫持:有别于跳转型型劫持,指通过在正常的网页中注入广告代码(js、iframe等),实现页面弹窗提醒或者底部广告等,又分为下面三个小类:
- 注入js类劫持:在正常页面注入劫持的js代码实现的劫持
- iframe类劫持:将正常页面嵌入iframe或者页面增加iframe页面
- 篡改页面类劫持:正常页面出现多余的劫持网页标签,导致页面整体大小发生变化
跳转型劫持
为了获取流量,一些电商或者类似百度这样需要流量合作的网站都会有自己的联盟系统,通过给予一些奖励来获取导流,比如:百度或者电商会有渠道分成。
为了区分哪些是第三方给予导流过来的,通常会在url地址增加类似source、from之类的参数,或者进入页面之前通过「中间页」种cookie。
这样,当用户输入一个正常网址的时候,劫持方会在网络层让其跳转到带分成或者渠道号的「中间页」或者带渠道号的页面。这样用户进行下单或者搜索等行为,劫持方会得到「佣金」。
上面说的这类case还算友好,至少用户一般体验不到页面变化,还有类似跳转到钓鱼网站的case,也有不正当竞争的case:用户输入baidu.com跳转到so.com或者sm.cn,而对方网站有故意做成和百度搜索差不多的样子,那时候也帮助法务做了很多案例收集。
题外话:前些年,用户使用百度搜索某些医疗类query,立即用户就会收到电话推广医院,很多用户投诉,不明真相的群众也指责百度,实际这类是运营商把url的关键词卖给了医疗机构,百度只不过是躺枪。。。那时候还做了个项目是加密query。。。
注入型劫持
页面在传输的过程中,被网络层进行内容「再加工」,常见有:注入js、iframe、篡改页面。
注入js
注入js的方式可以通过document.write
或者直接改html代码片段等方式,给页面增加外链js,为了做到更难检测,有些运营商会捏造一个不存在的url地址,从而不被过滤或者检测。
案例1:运营商会用自己识别的ip或者域名做js网址,wap.zjtoolbar.10086.cn这类只有在浙江移动网络下才会被解析出来,同理ip也是
案例2:运营商很聪明,知道页面可以检测所有外链js的域名,比如:m.baidu.com我只允许m.baidu.com/static的外链js,其他js都会被记录反馈;为了不被检测出来,我遇见个case电信会访问一个不存在的地址,比如:m.baidu.com/static/abc.js,这个地址在运营商直接返回劫持的js代码,请求不会发到百度的服务器。
被放入iframe或者iframe其他页面
这类case比较少见,但是一些擦边球的网站或者没有内容的垃圾站会用这种方式,他们一般是通过热门关键词之类做SEO,打开网站实际去了广告之类没有任何实际内容,而页面却是内嵌了一个其他网站,我们要是识别出来不被内嵌就需要检测。
篡改页面内容
这类case很少见,一般是在页面底部增加js之外的div,然后展现一些非网站内容。